/*
 * PagFormularioCategoria.java
 * 
 * Projeto: Kruskal - SRAC
 * LEDS - Laboratório de Engenharia e Desenvolvimento de Software
 * IFES - Instituto Federal do Espírito Santo - Campus Serra.
 */
package srac.controleatividades.cih;

import java.util.ArrayList;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Button;
import org.zkoss.zul.Messagebox;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Window;
import srac.controleatividades.cci.CtrlInterno;
import srac.controleatividades.cdp.Categoria;

public class PagFormularioCategoria extends GenericForwardComposer {

    private CtrlInterno ctrl = CtrlInterno.getInstance();
    private Window winFormularioCategoria;
    private Textbox nomeCategoria;
    private Categoria obj;
    private Button salvarCategoria;
    private int MODO;

    @Override
    public void doAfterCompose(Component comp) throws Exception {
        super.doAfterCompose(comp);
    }

    public void onCreate$winFormularioCategoria() {

        //if feito para verificar se existe algum usuario logado, se nao existir eh redirecionado para o login
        if (Executions.getCurrent().getSession().getAttribute("usuario") == null) {
            Executions.sendRedirect("/");
            winFormularioCategoria.detach();
        } 
        
        else {
            MODO = (Integer) arg.get("tipo");

            if (MODO != ctrl.SALVAR) {
                obj = (Categoria) arg.get("obj");
                preencherTela();
                if (MODO == ctrl.CONSULTAR) {
                    this.salvarCategoria.setVisible(false); //Desabilita o botão de salvar
                    bloquearTela();
                }
            }
        }
    }

    private void preencherTela() {
        nomeCategoria.setText(obj.getNome());
    }

    private void bloquearTela() {
        nomeCategoria.setDisabled(true);
    }

    public void onClick$salvarCategoria(Event event) {
        Categoria c = null;
        String msg = valido();
        if (msg.trim().equals("")) {
            if (MODO == ctrl.EDITAR) {
                obj.setNome(nomeCategoria.getText());
                
                c = ctrl.alterarCategoria(obj); //Altera a categoria
                
                if (c != null) {
                    winFormularioCategoria.onClose();
                }
            } 
            else {
                ArrayList<Object> list = new ArrayList<Object>();
                list.add(nomeCategoria.getText());
                
                if (ctrl.verificaExistencia(nomeCategoria.getText())) { //Verifica se já existe alguma categoria com aquele nome
                    Messagebox.show("Já existe uma categoria com esse nome!", " ", 0, Messagebox.EXCLAMATION);
                }
                else{
                    c = ctrl.incluirCategoria(list); //Inclui a nova categoria
                }

                if (c != null) {
                    winFormularioCategoria.onClose();
                }
            }

        } else {
            Messagebox.show(msg, "Informe:", 0, Messagebox.EXCLAMATION); //Mostra os campos vazios
        }
    }

    public void onClick$voltar(Event event) {
        winFormularioCategoria.onClose();
    }

    public void limparCampos() {
        nomeCategoria.setText("");
    }

    private String valido() { //Verifica se o nome não foi preenchido
        String msg = "";

        if (nomeCategoria.getText().trim().equals("")) {
            msg += "- Nome\n";
        }

        return msg;
    }
}
